package com.example.basic.poet;

import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeSpec;

import javax.lang.model.element.Modifier;
import java.io.File;
import java.io.IOException;

public class Test {

    public static void main(String[] args) throws IOException {
        //构造一个方法
        MethodSpec main = MethodSpec.methodBuilder("main")   //名称
                .addModifiers(Modifier.PUBLIC,Modifier.STATIC)   //修饰
                .returns(void.class)   //返回参数
                .addParameter(String[].class,"args")   //参数
                .addStatement("System.out.println(\"Hello , javaPoet\" + add(10,10))")   //语句
                .build();

        MethodSpec add = MethodSpec.methodBuilder("add")
                .addModifiers(Modifier.PUBLIC,Modifier.STATIC)
                .returns(int.class)
                .addParameter(int.class,"a")
                .addParameter(int.class,"b")
                .addStatement("return a + b")
                .build();

        //构造一个类
        TypeSpec hello = TypeSpec.classBuilder("Hello")
                .addModifiers(Modifier.PUBLIC)
                .addMethod(main)
                .addMethod(add)
                .build();

        //生成一个Java文件
        JavaFile javaFile = JavaFile.builder("com.poet.demo",hello).build();

        //将Java写到当前项目中
        javaFile.writeTo(System.out);   //打印到命令行中

        File file = new File("./src/");
        if (file.exists()) {
            file.delete();
        }
        javaFile.writeTo(file);
    }

}
